<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="I54HC" id="I54HC"><span data-lake-id="u9e897349" id="u9e897349">典型回答</span></h1>
  <p data-lake-id="u95b84231" id="u95b84231"><br></p>
  <p data-lake-id="u2363b0d4" id="u2363b0d4"><span data-lake-id="u2e2dd4f4" id="u2e2dd4f4">MyBatis-Plus是一个增强的MyBatis框架，提供了许多实用的功能和工具，包括：</span></p>
  <p data-lake-id="u4782140d" id="u4782140d"><span data-lake-id="ucc8d579c" id="ucc8d579c">​</span><br></p>
  <ol list="u1b2836df">
   <li fid="u6b83b04c" data-lake-id="ubd0e5dcb" id="ubd0e5dcb"><strong><span data-lake-id="udfc0b107" id="udfc0b107">通用Mapper</span></strong><span data-lake-id="uadca0538" id="uadca0538">：提供了一组通用的Mapper接口和实现，可以快速进行增删改查操作，无需手写SQL语句。例如BaseMapper、ConditionMapper等：</span></li>
  </ol>
  <pre lang="java"><code>
public interface UserMapper extends BaseMapper&lt;User&gt; {
}
</code></pre>
  <p data-lake-id="u329204ac" id="u329204ac"><br></p>
  <ol list="u1b2836df" start="2">
   <li fid="u6b83b04c" data-lake-id="u26ddcb7f" id="u26ddcb7f"><strong><span data-lake-id="ubc556579" id="ubc556579">分页插件</span></strong><span data-lake-id="u79e967a5" id="u79e967a5">：提供了一种简单易用的分页功能，可以根据传入的分页参数自动计算出分页信息，无需手动编写分页SQL语句。</span></li>
  </ol>
  <p data-lake-id="u6298a26c" id="u6298a26c"><span data-lake-id="u651ed9c3" id="u651ed9c3">​</span><br></p>
  <pre lang="java"><code>
public interface UserMapper extends BaseMapper&lt;User&gt; {
    List&lt;User&gt; selectUserPage(Page&lt;User&gt; page, @Param("name") String name);
}
</code></pre>
  <p data-lake-id="u84f4bb4c" id="u84f4bb4c"><br></p>
  <ol list="u1b2836df" start="3">
   <li fid="u6b83b04c" data-lake-id="u251881fe" id="u251881fe"><strong><span data-lake-id="u3c119298" id="u3c119298">自动生成代码</span></strong><span data-lake-id="u9a65ba77" id="u9a65ba77">：可以根据数据库表自动生成实体类、Mapper接口、Mapper XML映射文件等代码，大大减少了开发人员的工作量。</span></li>
  </ol>
  <p data-lake-id="ue23918d9" id="ue23918d9"><span data-lake-id="ucb0ce024" id="ucb0ce024">​</span><br></p>
  <pre lang="java"><code>
AutoGenerator generator = new AutoGenerator();
generator.setDataSource(dataSourceConfig);
generator.setPackageInfo(new PackageConfig().setParent("com.example.mybatisplus"));
generator.setGlobalConfig(new GlobalConfig().setOutputDir(System.getProperty("user.dir") + "/src/main/java"));
generator.setTemplateEngine(new FreemarkerTemplateEngine());
generator.execute();
</code></pre>
  <p data-lake-id="u7953d93f" id="u7953d93f"><br></p>
  <ol list="u1b2836df" start="4">
   <li fid="u6b83b04c" data-lake-id="u8d108794" id="u8d108794"><strong><span data-lake-id="u7452a208" id="u7452a208">Lambda表达式支持</span></strong><span data-lake-id="uc7de605b" id="uc7de605b">：提供了LambdaQueryWrapper和LambdaUpdateWrapper，可以使用Lambda表达式来构造查询条件和更新操作，使得代码更加简洁和易读。</span></li>
  </ol>
  <p data-lake-id="ua8d06a0b" id="ua8d06a0b"><span data-lake-id="u05a7715e" id="u05a7715e">​</span><br></p>
  <pre lang="java"><code>
LambdaQueryWrapper&lt;User&gt; queryWrapper = new LambdaQueryWrapper&lt;&gt;();
queryWrapper.eq(User::getName, "Tom").gt(User::getAge, 18);
List&lt;User&gt; userList = userMapper.selectList(queryWrapper);
</code></pre>
  <p data-lake-id="u1725b62d" id="u1725b62d"><br></p>
  <ol list="u1b2836df" start="5">
   <li fid="u6b83b04c" data-lake-id="u65471c9b" id="u65471c9b"><strong><span data-lake-id="u99879f24" id="u99879f24">SQL注入器</span></strong><span data-lake-id="u2baf641f" id="u2baf641f">：提供了自定义的SQL注入器功能，可以自由扩展MyBatis的SQL语句，实现更加灵活的SQL操作。</span></li>
  </ol>
  <p data-lake-id="u5b969ee9" id="u5b969ee9"><br></p>
  <pre lang="java"><code>
public class CustomSqlInjector extends AbstractSqlInjector {
    @Override
    public List&lt;AbstractMethod&gt; getMethodList(Class&lt;?&gt; mapperClass) {
        List&lt;AbstractMethod&gt; methodList = new ArrayList&lt;&gt;();
        methodList.add(new CustomInsert());
        return methodList;
    }
}

public class CustomInsert extends InsertMethod {
    @Override
    public String getMethod(SqlSource sqlSource) {
        return "customInsert";
    }
}
</code></pre>
  <p data-lake-id="u3629cfd7" id="u3629cfd7"><br></p>
  <ol list="u1b2836df" start="6">
   <li fid="u6b83b04c" data-lake-id="uf4d7e2cb" id="uf4d7e2cb"><strong><span data-lake-id="u1047a496" id="u1047a496">性能分析插件</span></strong><span data-lake-id="u93b98f28" id="u93b98f28">：提供了性能分析插件，可以帮助开发人员分析SQL执行效率，优化数据库操作。</span></li>
  </ol>
  <p data-lake-id="uaf0bf171" id="uaf0bf171"><span data-lake-id="ua4fc4766" id="ua4fc4766">​</span><br></p>
  <h1 data-lake-id="eBuhA" id="eBuhA"><span data-lake-id="u17fe6c2d" id="u17fe6c2d">扩展知识</span></h1>
  <h2 data-lake-id="uWGoH" id="uWGoH"><span data-lake-id="u24aba3df" id="u24aba3df" class="lake-fontsize-12" style="color: rgb(52, 53, 65)">MyBatis-Plus的优缺点？</span></h2>
  <p data-lake-id="u3bd2cd36" id="u3bd2cd36"><br></p>
  <p data-lake-id="ubdc218a2" id="ubdc218a2"><span data-lake-id="u669f78c5" id="u669f78c5">优点</span></p>
  <ol list="ucd51d70c">
   <li fid="u17e9b53c" data-lake-id="ucf10e4f6" id="ucf10e4f6"><span data-lake-id="u5d78745d" id="u5d78745d">简化开发：MyBatis-Plus封装了很多CRUD操作，使得我们不需要手写大量的SQL语句，从而减少了开发时间和代码量。</span></li>
  </ol>
  <p data-lake-id="u69300d80" id="u69300d80"><br></p>
  <ol list="ucd51d70c" start="2">
   <li fid="u17e9b53c" data-lake-id="u8869ce54" id="u8869ce54"><span data-lake-id="u602073a1" id="u602073a1">提高性能：MyBatis-Plus的分页插件和缓存插件等能够提高SQL执行的效率和性能。</span></li>
  </ol>
  <p data-lake-id="u9a20a447" id="u9a20a447"><br></p>
  <ol list="ucd51d70c" start="3">
   <li fid="u17e9b53c" data-lake-id="u4878b2f6" id="u4878b2f6"><span data-lake-id="u135e2431" id="u135e2431">提供了代码生成器：MyBatis-Plus提供了一款强大的代码生成器，能够根据数据库表自动生成Java Bean、Mapper接口、Service接口等代码，大大提高了开发效率。</span></li>
  </ol>
  <p data-lake-id="ue479a545" id="ue479a545"><br></p>
  <ol list="ucd51d70c" start="4">
   <li fid="u17e9b53c" data-lake-id="u490411db" id="u490411db"><span data-lake-id="u8b0af148" id="u8b0af148">易于扩展：MyBatis-Plus提供了丰富的插件接口，能够自定义插件，实现自己的业务需求。</span></li>
  </ol>
  <p data-lake-id="u00f8b5ef" id="u00f8b5ef"><br></p>
  <p data-lake-id="uacd48318" id="uacd48318"><span data-lake-id="uc3574f5c" id="uc3574f5c">缺点：</span></p>
  <ol list="u8fcfb778">
   <li fid="uad6fdd14" data-lake-id="ubb0b6114" id="ubb0b6114"><span data-lake-id="u06cae11d" id="u06cae11d">技术选型限制：MyBatis-Plus是基于MyBatis的增强工具，因此使用MyBatis-Plus需要熟悉MyBatis的使用，对于不熟悉MyBatis的开发人员来说可能需要一些时间学习。</span></li>
  </ol>
  <p data-lake-id="u7edc4e5f" id="u7edc4e5f"><br></p>
  <ol list="u8fcfb778" start="2">
   <li fid="uad6fdd14" data-lake-id="u37a205d1" id="u37a205d1"><span data-lake-id="u8e61a75e" id="u8e61a75e">版本依赖问题：MyBatis-Plus的版本依赖于MyBatis的版本，因此需要注意版本的兼容性。</span></li>
  </ol>
  <p data-lake-id="u0fd755f6" id="u0fd755f6"><br></p>
  <ol list="u8fcfb778" start="3">
   <li fid="uad6fdd14" data-lake-id="u5d9cceb1" id="u5d9cceb1"><span data-lake-id="u4c2e5ef9" id="u4c2e5ef9">自动映射不可靠：MyBatis-Plus提供了自动映射功能，但是在某些情况下可能不够可靠，需要手动进行映射。</span></li>
  </ol>
  <p data-lake-id="u454c6a14" id="u454c6a14"><br></p>
  <ol list="u8fcfb778" start="4">
   <li fid="uad6fdd14" data-lake-id="ua7369057" id="ua7369057"><span data-lake-id="u17aceff1" id="u17aceff1">代码生成器生成的代码可能需要手动调整：MyBatis-Plus的代码生成器可以自动生成大量的代码，但是有时候生成的代码可能不符合项目的需求，需要手动进行调整。</span></li>
  </ol>
  <p data-lake-id="uc4f2a99f" id="uc4f2a99f"><br></p>
 </body>
</html>